package com.macro.mall.tiny.modules.bms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.macro.mall.tiny.common.api.CommonPage;
import com.macro.mall.tiny.modules.bms.model.Advert;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 广告信息表 服务类
 * </p>
 *
 * @author macro
 * @since 2025-11-21
 */
public interface AdvertService extends IService<Advert> {

    /**
     * 分页查询广告列表
     * @param positionId 广告位ID，用于筛选
     * @param name 广告名称，用于筛选
     * @param startTime 创建时间起始
     * @param endTime 创建时间结束
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 广告分页列表
     */
    CommonPage<Advert> getPageList(Integer positionId, String name, LocalDateTime startTime, LocalDateTime endTime, Integer pageNum, Integer pageSize);

    /**
     * 新增广告
     * @param advert 广告信息
     * @return 是否成功
     */
    boolean create(Advert advert);

    /**
     * 更新广告
     * @param id 广告ID
     * @param advert 广告信息
     * @return 是否成功
     */
    boolean update(Long id, Advert advert);

    /**
     * 删除广告
     * @param id 广告ID
     * @return 是否成功
     */
    boolean delete(Long id);

    /**
     * 根据广告位ID获取所有有效广告
     * @param positionId 广告位ID
     * @return 有效广告列表
     */
    List<Advert> getActiveAdvertsByPositionId(Integer positionId);
}